using System.Collections.Generic;
using NUnit.Framework;

namespace ServiceStack.Common.Tests.Models;

public class ModelWithMapAndList<T>
{
    public ModelWithMapAndList()
    {
        this.Map = new Dictionary<T, T>();
        this.List = new List<T>();
    }

    public ModelWithMapAndList(int id)
        : this()
    {
        Id = id;
        Name = "Name" + id;
    }

    public int Id { get; set; }

    public string Name { get; set; }

    public Dictionary<T, T> Map { get; set; }

    public List<T> List { get; set; }

    public static ModelWithMapAndList<T> Create<U>(int id)
    {
        return new ModelWithMapAndList<T>(id);
    }

    public static void AssertIsEqual(ModelWithMapAndList<T> actual, ModelWithMapAndList<T> expected)
    {
        Assert.That(actual.Id, Is.EqualTo(expected.Id));
        Assert.That(actual.Name, Is.EqualTo(expected.Name));
        Assert.That(actual.Map, Is.EquivalentTo(expected.Map));
        Assert.That(actual.List, Is.EquivalentTo(expected.List));
    }
}